const list = [
    { id: 1, v: 1 },
    { id: 2, v: 2 },
    { id: 3, v: 3 },
    { id: 1, v: 4 }
]

function distinct(list) {
    // x: 表示当前对象
    // index: 表示当前元素下标
    // self:表示该数组对象
    var res = list.filter((x, index,self)=>{
        var arrids = []
        list.forEach((item,i) => {
          arrids.push(item.id)
        })
        return arrids.indexOf(x.id) === index
      })
    return res;
}

function distinct2(list) {
    
    let res = new Set(list);

    return [...res];
}

console.log(distinct(list));
// console.log(distinct2(list));

// var arr2 = list.filter((x, index,self)=>{
//     var arrids = []
//     list.forEach((item,i) => {
//       arrids.push(item.id)
//     })
//     return arrids.indexOf(x.id) === index
//   })  
//   console.log(arr2); 